package com.jrx.anytxn.param.mapper.ext;

import com.jrx.anytxn.common.annotation.ParamTuningAnnotation;
import com.jrx.anytxn.param.entity.PrAmortMethod;
import com.jrx.anytxn.param.mapper.base.PrAmortMethodMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName ExtPrAmortMethodMapper
 * @Description: 还款方式mapper
 * @Author yf
 * @Date 2019/7/29 0029
 * @Version V1.0
 **/
public interface ExtPrAmortMethodMapper extends PrAmortMethodMapper {

    /**
     * 根据租户ID和还款方式ID查询
     *
     * @param amortMethodId 还款方式ID
     * @param tenantId      租户Id
     * @return com.jrx.anytxn.param.entity.PrAmortMethod
     * @author fan.yang
     * date: 2019/10/14 0014 下午 14:58
     */
    PrAmortMethod selectByAmortMethodIdAndTenId(@Param("amortMethodId") String amortMethodId, @Param("tenantId") String tenantId);

    /**
     * 根据租户ID和还款方式ID修改
     *
     * @param amortMethod 还款方式实体
     * @return int
     * @author fan.yang
     * date: 2019/10/14 0014 下午 15:04
     */
    @ParamTuningAnnotation
    int updateByAmortIdAndTenId(PrAmortMethod amortMethod);

    /**
     * 根据租户ID查询所有
     *
     * @param tenantId 租户Id
     * @return java.util.List<com.jrx.anytxn.param.entity.PrAmortMethod>
     * @author fan.yang
     * date: 2019/10/14 0014 下午 14:48
     */
    List<PrAmortMethod> selectByTenId(String tenantId);

    /**
     * 根据机构号和租户Id查询还款方式表信息
     *
     * @param organizationId 机构号
     * @param tenantId       租户ID
     * @return java.util.List<com.jrx.anytxn.param.entity.PrAmortMethod>
     * @author fan.yang
     * date: 2019/10/14 0014 下午 15:41
     */
    List<PrAmortMethod> selectAmortMethodByOrgIdAndTenId(@Param("organizationId") String organizationId, @Param("tenantId") String tenantId);

    /**
     * 根据租户ID，机构号和还款方式查询信息
     *
     * @param chargeOption   还款方式
     * @param organizationId 机构号
     * @param tenantId       租户ID
     * @return com.jrx.anytxn.param.entity.PrAmortMethod
     * @author fan.yang
     * date: 2019/10/14 0014 下午 15:27
     */
    PrAmortMethod selectByOrgIdAndOptionAndTenId(@Param("chargeOption") String chargeOption, @Param("organizationId") String organizationId, @Param("tenantId") String tenantId);

    /**
     * 根据租户ID和还款方式ID删除
     *
     * @param tenantId      租户Id
     * @param organizationId 机构ID
     * @param amortMethod 还款方式ID
     * @return int
     * @author fan.yang
     * date: 2019/10/14 0014 下午 15:34
     */
    @ParamTuningAnnotation
    int deleteByTenIdAndAmortId(@Param("tenantId") String tenantId, @Param("organizationId") String organizationId,
                                @Param("amortMethod") String amortMethod);

    /**
     * @MethodName: selectAmortMethodByAmortMethodId
     * @Description: 根据还款方式ID查询还款信息
     * @Param: [amortMethodId]
     * @Return: com.jrx.anytxn.param.entity.PrAmortMethod
     * @Author: fan.yang
     * @Time: 下午 20:01
     */
    PrAmortMethod selectAmortMethodByAmortMethodIdAndTenId(@Param("amortMethodId") String amortMethodId, @Param("tenantId") String tenantId);

    /**
     *
     * @param organizationId
     * @param tenantId
     * @param amortMethodList
     * @return
     */
    List<PrAmortMethod> selectAmortMethodByAmortMethodIdsAndTenId(String organizationId, String tenantId, List<String> amortMethodList);
}
